﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Medianamik.Core.Synchronization
{
    public class ToMedianamikRecordsOptions
    {
        public ToMedianamikRecordsOptions(string typeName)
        {
            TypeName = typeName;
        }

        /// <summary>
        ///     Nom du type Medianamik importé (type existant conforme aux mappings définis)
        /// </summary>
        public string TypeName { get; set; }

        /// <summary>
        ///     Culture des Records par défaut
        /// </summary>
        public string DefaultCultureName { get; set; }

        /// <summary>
        ///     ParentNodeId associé à tous les Records
        /// </summary>
        public Guid? ParentNodeId { get; set; }
        
        /// <summary>
        ///     Nom de la colonne (DataTable) contenant le NodeId
        /// </summary>
        public string NodeIdColumnName { get; set; }

        /// <summary>
        ///     Nom de la colonne (DataTable) contenant le ParentNodeId
        /// </summary>
        public string ParentNodeIdColumnName { get; set; }

        /// <summary>
        ///     Nom de la colonne (DataTable) contenant le CreatedOn
        /// </summary>
        public string CreatedOnColumnName { get; set; }

        /// <summary>
        ///     Nom de la colonne (DataTable) contenant le UpdatedOn
        /// </summary>
        public string UpdatedOnColumnName { get; set; }

        /// <summary>
        ///     Nom de la colonne (DataTable) contenant le CreatedBy
        /// </summary>
        public string CreatedByColumnName { get; set; }

        /// <summary>
        ///     Nom de la colonne (DataTable) contenant le UpdatedBy
        /// </summary>
        public string UpdatedByColumnName { get; set; }

        /// <summary>
        ///     Si vrai, aucun Record ne sera synchronisé si passé en paramètre au mécanisme de synchronization
        /// </summary>
        public bool IgnoreImport { get; set; }

        /// <summary>
        ///     Nom de la colonne (DataTable) contenant le IsSubEntity
        /// </summary>
        public string IsSubEntityColumnName { get; set; }

        /// <summary>
        ///     Nom de la colonne (DataTable) contenant le ExistsInCurrentCulture
        /// </summary>
        public string ExistsInCurrentCultureColumnName { get; set; }

        /// <summary>
        ///     Nom de la colonne (DataTable) contenant le Position
        /// </summary>
        public string PositionColumnName { get; set; }

        /// <summary>
        ///     Nom de la colonne (DataTable) contenant le IsActive
        /// </summary>
        public string IsActiveColumnName { get; set; }

        /// <summary>
        ///     Nom de la propriété (Medianamik) contenant le ParentNodeId sur le type parent (ParentNodeIdReferencedTypeName)
        /// </summary>
        public string ParentIdPropertyName { get; set; }

        /// <summary>
        ///     Nom du type Medianamik parent (avec la propriété ParentNodeIdPropertyName)
        /// </summary>
        public string ParentIdReferencedTypeName { get; set; }

        /// <summary>
        ///     Nom de la colonne (DataTable) contenant le Id déterminant si le mécanisme de synchronisation insérera ou mettra à jour le Record (lookup sur les valeurs de PreviousIdColumnName et PreviousIdPropertyName)
        /// </summary>
        public string PreviousIdColumnName { get; set; }

        /// <summary>
        ///     Nom de la propriété (Medianamik) contenant le Id déterminant si le mécanisme de synchronisation insérera ou mettra à jour le Record (lookup sur les valeurs de PreviousIdColumnName et PreviousIdPropertyName)
        /// </summary>
        public string PreviousIdPropertyName { get; set; }
    }
}
